Ich habe bereits schon hier eine Anleitung geschrieben, wie ihr Seafile Professional normal “von Hand” installieren könnt. Nun zeige ich euch, wie ihr dies in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.
Datum | Änderungen |
---|---|
14.04.2020 | Erstellung dieser Anleitung |
06.01.2023 | Update Docker Compose v2, Update Docker Compose Datei, Update Traefik Labels |
13.01.2023 | Update von Elasticsearch, memcached. Dadurch lässt sich die Suche nutzen. Vielen Dank an @eltonit |
13.01.2023 | Kapitel zur Integration in Collabora (Online Office) hinzugefügt. Vielen Dank an @eltonit |
29.05.2023 | Anpassung an neue Traefik Anleitung |
28.10.2024 | Anpassung an neues Seafile Image |
Als Grundlage meiner Anleitung dient die offizielle Seafile Anleitung für Docker.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik V3 Installation, Konfiguration und CrowdSec-Security
2. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/seafile-pro/{db,seafile-data,elastic-data}
Nun passen wir noch eine Berechtigung an, damit Elasticsearch später funktioniert (Dank an @eltonit)
chmod 777 -R /opt/containers/seafile-pro/elastic-data/
3. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Seafile Compose genommen und diese abgeändert für Traefik.
nano /opt/containers/seafile-pro/docker-compose.yml
Inhalt
services: seafile-db: image: mariadb:10.11 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev - MYSQL_LOG_CONSOLE=true - MARIADB_AUTO_UPGRADE=1 volumes: - ./db:/var/lib/mysql networks: - default seafile-memcached: image: memcached:1.6.18 container_name: seafile-memcached entrypoint: memcached -m 256 networks: - default seafile-elasticsearch: image: elasticsearch:8.13.0 container_name: seafile-elasticsearch environment: - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms2g -Xmx2g" - "xpack.security.enabled=false" ulimits: memlock: soft: -1 hard: -1 mem_limit: 4g volumes: - ./elastic-data:/usr/share/elasticsearch/data networks: - default seafile: image: docker.seadrive.org/seafileltd/seafile-pro-mc:11.0-latest container_name: seafile volumes: - ./seafile-data:/shared environment: - DB_HOST=seafile-db - DB_ROOT_PASSWD=db_dev - TIME_ZONE=Europe/Berlin - SEAFILE_ADMIN_EMAIL=test@euredomain.de # Nutzername des Seafile Admins - SEAFILE_ADMIN_PASSWORD=test # Seafile Admin Passwort - SEAFILE_SERVER_LETSENCRYPT=false - SEAFILE_SERVER_HOSTNAME=cloud.euredomain.de depends_on: - seafile-db - seafile-memcached - seafile-elasticsearch networks: - default - proxy labels: - "traefik.enable=true" - "traefik.http.routers.seafile.entrypoints=websecure" - "traefik.http.routers.seafile.rule=(Host(`cloud.euredomain.de`))" - "traefik.http.routers.seafile.tls=true" - "traefik.http.routers.seafile.tls.certresolver=http_resolver" - "traefik.http.routers.seafile.service=seafile" - "traefik.http.services.seafile.loadbalancer.server.port=80" - "traefik.docker.network=proxy" - "traefik.http.routers.seafile.middlewares=default@file" networks: proxy: external: true
Notwendige Anpassungen:
- MySQL Passwort vergeben
- Admin E-Mail vergeben
- Admin Kennwort vergeben
- Eure URL eingeben bei Seafile
- eure URL eingeben bei Traefik
4. Seafile Server starten
4.1 Bei docker.seadrive.org anmelden
Um die neuste Version von Seafile Professional zu beziehen, müsst ihr euch bei docker.seadrive.org anmelden mittels Docker. Dazu gebt ihr folgenden Befehl ein. Die Zugangsdaten habe ich hier entnommen.
docker login docker.seadrive.org Nutzername: seafile Passwort: zjkmid6rQibdZ=uJMuWS
4.2 Seafile Konfiguration erzeugen
Nun lassen wir uns alle Konfigurationsdateien erstellen. Dazu starten wir den Server:
docker compose -f /opt/containers/seafile-pro/docker-compose.yml up
Wenn ihr nun folgendes in der Konsole seht, dann könnt ihr den Server mittels “STRG+C” wieder beenden:
seafile | seafile | Seahub is started seafile | seafile | Done. seafile | seafile |
Nun müssen wir noch eine Datei anpassen. Gebt dazu folgendes ein:
nano /opt/containers/seafile-pro/seafile-data/seafile/conf/seahub_settings.py
Fügt hier am Ende folgendes hinzu:
CSRF_TRUSTED_ORIGINS = ["https://cloud.euredomain.de"]
Die Domain müsst ihr natürlich auf die selbe Domain wie im Schritt 3 anpassen.
4.3 Container starten
Den Server startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/seafile-pro/docker-compose.yml up -d
Nun sollte es so aussehen, wenn ihr auf “cloud.euredomain.de” geht.
5. Anpassungen für Uploads vornehmen
Unsere Verbindung wird mittels Traefik TLS verschlüsselt. Daher müssen wir noch Seafile anpassen. Diese Einstellungen müsst ihr mit dem Administrator Benutzer vornehmen.
Klickt auf euer “Avatar” oben rechts.
Hier klickt ihr auf “System-Administration”.
Nun auf “Einstellungen”. Hier sind jetzt die “SERVICE_URL” und “FILE_SERVER_ROOT” wichtig. Diese passt ihr an.
Wichtig ist, dass wenn ihr änderungen vornehmt, dass ihr diese mit dem “Haken” bestätigt.
Nun ändert die Einstellungen folgendermaßen ab:
- SERVICE_URL = https://cloud.euredomain.de
- FILE_SERVER_ROOT = https://cloud.euredomain.de/seafhttp
6. Collabora Office Integration
Nun habt ihr noch die Möglichkeit Collabora Office in Seafile zu Integrieren. Bei Collabora Office handelt es sich um eine kostenloses Online Office, welches ihr selbst hosten könnt. Alle Infos dazu findet ihr hier.
7. Quellen
https://download.seafile.com/published/seafile-manual/docker/deploy%20seafile%20with%20docker.md
https://github.com/haiwen/seafile-docker
Hi zusammen,
wie kann ich den am besten eine docker basierende MariaDB für mehrerer Services konfigurieren? Ich habe nun Nexcloud und Seafile am laufen. Beide kommen in den Konfigurationen hier mit einer eigenen mysql-DB. Da ist auf dauer, wenn noch mehr Services dazu kommen, irgendwie nicht Ressourcen schonend.
Hat sich jemand mal dadrüber schon Gedanken gemacht und hat ein Vorschlag für eine entsprechende Konfiguration?
VG
Rebel2k
Wie immer, eine super Anleitung!! Eine Frage habe ich trotzdem noch, wie kann ich Collabora Online in Seafile einbinden, was muss ich beachten? Bin dankbar für jeden Tipp.
VG Frank
Bei mir funktioniert die Suche nicht, lediglich ein “Interner Serverfehler” wird angezeigt. Der Rest funktioniert super. Wo wäre die erste Stelle, wo ich ich den Grund dafür entdecken könnte? Welche log ist für die Suche da?
apropos, der Fehler lag bei mir, ich hatte versehentlich 2x die environment Sektion in meiner docker-.compose.yml sodass der 2. Teil davon ignoriert wurde 🙁
Welche VErsion funktioniert denn bei dir Christian?
Hier hatte jemand das gleiche Problem schon vor einem Jahr mit dem Docker Image: https://forum.seafile.com/t/docker-for-version-seven-not-starting-throwing-db-connection-on-127-0-0-1/9375
Und das Sahnehäubchen oben drauf:
docker logs -f seafile
*** Running /etc/my_init.d/01_create_data_links.sh…
*** Booting runit daemon…
*** Runit started as PID 14
*** Running /scripts/start.py…
waiting for mysql server to be ready: %s (2003, “Can’t connect to MySQL server on ‘127.0.0.1’ ([Errno 111] Connection refused)”)
waiting for mysql server to be ready: %s (2003, “Can’t connect to MySQL server on ‘127.0.0.1’ ([Errno 111] Connection refused)”)
waiting for mysql server to be ready: %s (2003, “Can’t connect to MySQL server on ‘127.0.0.1’ ([Errno 111] Connection refused)”)
waiting for mysql server to be ready: %s (2003, “Can’t connect to MySQL server on ‘127.0.0.1’ ([Errno 111] Connection refused)”)
waiting for mysql server to be ready: %s (2003, “Can’t connect to MySQL server on ‘127.0.0.1’ ([Errno 111]
Warum sucht seafile auf 127.0.0.1 nach MYSQL??? das ist doch ein separater Container und den hab ich doch hier angegeben:
environment:
– DB_HOST=seafile-db
Hi,
da ich traefik 2.3 schon seit eienr Weile produktiv nutze, bin ich deiner Anleitung nicht 100% gefolgt.
Mein Problem ist, dass ich bei Zugriff auf Seafile einen Bad Gateway error bekomme. Irgendeine Idee?
Ich trage hier mal alle Info zusammen (meine docker-compose.yml gibts bei Bedarf gerne auch)
Fehler:
502 Bad Gateway
nginx/1.14.0 (Ubuntu)
docker exec -ti seafile bash
wget http://localhost
–2020-07-27 09:53:30– http://localhost/
Resolving localhost (localhost)… 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:80… connected.
HTTP request sent, awaiting response… 502 Bad Gateway
2020-07-27 09:53:30 ERROR 502: Bad Gateway.
Es liegt also nicht an traefik sondern an seafile selbst. irgendwie.
innerhalb des seafile containers:
cat /etc/nginx/sites-enabled/seafile.nginx.conf
server {
listen 80;
server_name seafile.example.com;
client_max_body_size 10m;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_read_timeout 310s;
proxy_set_header Host $host;
proxy_set_header Forwarded “for=$remote_addr;proto=$scheme”;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Connection “”;
proxy_http_version 1.1;
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log seafileformat;
error_log /var/log/nginx/seahub.error.log;
}
…
ABER
wget http://127.0.0.1:8000
–2020-07-27 09:55:27– http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000… failed: Connection refused.
da lauscht nichts. Logisch dass da Bad Gateway kommt. Netstat innerhalb des seafile containers bestätigt: auf Port 8000 läuft da nichts.